package com.woniuxy.controller;

import com.woniuxy.pojo.User;
import com.woniuxy.service.UserService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;


@Controller
public class LoginController {
    private Logger logger=Logger.getLogger(this.getClass());
    @Autowired
    private UserService userService;
    /*
     @RequestMapping中常用属性
     value:实际上就是请求的路径
     method:表示限定请求的方式：常用的RequestMethod.GET,RequestMethod.POST
     从spring4.3以后通过如下注解代替了请求方式
     @GetMapping(value="/login")=======>@RequestMapping(value = "/login",method = RequestMethod.GET)
     @PostMapping(value="/login")======>@RequestMapping(value = "/login",method = RequestMethod.POST)
     */
    //@RequestMapping(value = "/login",method = RequestMethod.POST)
    @PostMapping(value = "/login")
    /*
      SpringMVC接收客户端的请求的参数的方式
      第1种：使用原始Servlet的写法
      缺点：1）不能使用spring框架提供的内置类型转换器，还需要手动转换 2）与servlet的耦合性不较强
      public ModelAndView login(HttpServletRequest request){
        String name=request.getParameter("name");
      ｝
      第2种方式：直接通过控制器处理方法的形参名和表单的值对应的方式获取
      好处：相对于第1种可以不用处理类型转换
      缺点：如果表单的name和处理器的形参名称不对应就接收不到
      如果两者不对应，在springmvc提供了一个注解@RequestParam可以设置
     */
    /**
     * Springmvc种怎么获取HttpSession对象
     */
    public ModelAndView login(@RequestParam("telephone") String telephone,
                              @RequestParam("password") String password,
                              HttpSession session,
                              HttpServletRequest request){
        User result=userService.login(telephone,password);
        ModelAndView modelAndView=new ModelAndView();
        //保存到session中
        session.setAttribute("USER_SESSION",result);
        //如果是转发
       //modelAndView.setViewName("/index.jsp");
        //如果是重定向
        //获取虚拟目录
        String contextPath=request.getContextPath();
        modelAndView.setViewName("redirect:index.jsp");
        return modelAndView;
    }
}
